9d9638
@@ -119,6 +119,9 @@
public void setContext(HiveLockManagerCtx ctx) throws LockException {
         zooKeeper.create("/" +  parent, new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
       } catch (KeeperException e) {
         // ignore if the parent already exists
+        if (e.code() != KeeperException.Code.NODEEXISTS) {
+          LOG.warn("Unexpected ZK exception when creating parent node /" + parent, e);
+        }
       }
 
     } catch (Exception e) {
@@ -254,6 +257,7 @@
public void releaseLocks(List<HiveLock> hiveLocks) {
           unlock(hiveLock);
         } catch (LockException e) {
           // The lock may have been released. Ignore and continue
+          LOG.warn("Error when releasing lock", e);
         }
       }
     }
@@ -301,6 +305,10 @@
private ZooKeeperHiveLock lock (HiveLockObject key, HiveLockMode mode,
       try {
         if (tryNum > 1) {
           Thread.sleep(sleepTime);
+          if (zooKeeper.getState() == ZooKeeper.States.CLOSED) {
+            // Reconnect if the connection is closed.
+            zooKeeper = null;
+          }
           prepareRetry();
         }
         ret = lockPrimitive(key, mode, keepAlive, parentCreated);
@@ -572,7 +580,7 @@
public static void releaseAllLocks(HiveConf conf) throws Exception {
             data = new HiveLockObjectData(new String(zkpClient.getData(curChild, new DummyWatcher(), null)));
             data.setClientIp(clientIp);
           } catch (Exception e) {
-            LOG.error("Error in getting data for " + curChild + " " + e);
+            LOG.error("Error in getting data for " + curChild, e);
             // ignore error
           }
         }
@@ -593,7 +601,7 @@
private void removeAllRedundantNodes() {
         zooKeeper = null;
       }
     } catch (Exception e) {
-      // ignore all errors
+      LOG.warn("Exception while removing all redundant nodes", e);
     }
   }
 
@@ -615,7 +623,7 @@
private void checkRedundantNode(String node) {
         zooKeeper.delete(node, -1);
       }
     } catch (Exception e) {
-      // ignore all errors
+      LOG.warn("Error in checkRedundantNode for node " + node, e);
     }
   }
 
